Solana Ağı'ndan Veri Okuma
Özeti
- SOL, Solana'nın yerel token'ının adıdır. Her SOL, 1 milyar Lamport'tan oluşur.
- Hesaplar, token'ları, NFT'leri, programları ve verileri saklar. Şu an için, SOL saklayan hesaplara odaklanacağız.
- Adresler, Solana ağındaki hesapları işaret eder. Herkes, belirli bir adresteki verileri okuyabilir. Çoğu adres ayrıca açık anahtardır.
Ders
Hesaplar
Solana üzerindeki tüm veriler hesaplarda saklanır. Hesaplar şunları saklayabilir:
- SOL
- USDC gibi diğer token'lar
- NFT'ler
- Bu kursta yapacağımız film inceleme programı gibi programlar!
- Yukarıdaki program için bir film incelemesi gibi program verileri!
SOL
SOL, Solana'nın 'yerel token'ıdır - bu, SOL'un işlem ücretlerini, hesap kiralarını ve diğer yaygın ödemeleri karşılamak için kullanıldığı anlamına gelir. SOL bazen ◎
sembolü ile gösterilir. Her SOL, 1 milyar Lamport'tan oluşur.
Mali uygulamaların genellikle USD için sent ile ve GBP için pence ile hesaplama yaptığı gibi, Solana uygulamaları genellikle SOL'u Lamport olarak transfer eder, harcar, saklar ve yönetir; yalnızca kullanıcıya tam SOL göstermek için dönüştürür.
Adresler
Adresler benzersiz bir şekilde hesapları tanımlar. Adresler genellikle dDCQNnDmNbFVi8cQhKAgXhyhXeJ625tvwsunRyRc7c8
gibi base-58 kodlu dizeler olarak gösterilir. Solana'daki çoğu adres aynı zamanda açık anahtardır. Önceki bölümde bahsedildiği gibi, bir adres için eşleşen gizli anahtara sahip olan kişi, hesabı kontrol eder - örneğin, gizli anahtarına sahip olan kişi, hesabından token gönderebilir.
Solana Blok Zincirinden Okuma
Kurulum
Solana ile ilgili işlerin çoğunu yapmak için @solana/web3.js
adında bir npm paketi kullanıyoruz. Ayrıca TypeScript ve esrun
kuracağız, böylece .ts
dosyalarını komut satırında çalıştırabiliriz:
npm install typescript @solana/web3.js@1 esrun
Ağa Bağlan
@solana/web3.js
kullanarak Solana ağıyla her etkileşim Connection
nesnesi üzerinden gerçekleşecek. Connection
nesnesi, belirli bir Solana ağı ile, 'küme' olarak adlandırılan bir bağlantı kurar. Şu an için, Mainnet
yerine Devnet
kümesini kullanacağız. Devnet
, geliştirici kullanımı ve test için tasarlanmıştır ve DevNet
token'larının gerçek bir değeri yoktur.
import { Connection, clusterApiUrl } from "@solana/web3.js";
const connection = new Connection(clusterApiUrl("devnet"));
console.log(`✅ Bağlandı!`);
Bu TypeScript'i çalıştırmak (npx esrun example.ts
) şu çıktıyı gösterir:
✅ Bağlandı!
Ağı Okuma
Bir hesabın bakiyesini okumak için:
import { Connection, PublicKey, clusterApiUrl } from "@solana/web3.js";
const connection = new Connection(clusterApiUrl("devnet"));
const address = new PublicKey("CenYq6bDRB7p73EjsPEpiYN7uveyPUTdXkDkgUduboaN");
const balance = await connection.getBalance(address);
console.log(`Hesabın ${address} adresindeki bakiyesi ${balance} lamport.`);
console.log(`✅ Tamamlandı!`);
Dönen bakiye, daha önce tartıştığımız gibi lamport cinsindendir. Web3.js, Lamport'ları SOL olarak göstermek için LAMPORTS_PER_SOL
sabitini sağlar:
import {
Connection,
PublicKey,
clusterApiUrl,
LAMPORTS_PER_SOL,
} from "@solana/web3.js";
const connection = new Connection(clusterApiUrl("devnet"));
const address = new PublicKey("CenYq6bDRB7p73EjsPEpiYN7uveyPUTdXkDkgUduboaN");
const balance = await connection.getBalance(address);
const balanceInSol = balance / LAMPORTS_PER_SOL;
console.log(`Hesabın ${address} adresindeki bakiyesi ${balanceInSol} SOL.`);
console.log(`✅ Tamamlandı!`);
npx esrun example.ts
çalıştırıldığında şöyle bir çıktı alırsınız:
Hesabın CenYq6bDRB7p73EjsPEpiYN7uveyPUTdXkDkgUduboaN adresindeki bakiyesi 0.00114144 SOL.
✅ Tamamlandı!
...ve tam olarak böylece, Solana blok zincirinden veri okumayı başardık!
Uygulama
Öğrendiklerimizi uygulayalım ve belirli bir adresteki bakiyeyi kontrol edelim.
Bir anahtar çiftini yükle
Önceki bölümden açık anahtarı hatırlayın.
check-balance.ts
adında yeni bir dosya oluşturun ve `` kısmını kendi açık anahtarınızla değiştirin.
Script, açık anahtarı yükler, DevNet'e bağlanır ve bakiyeyi kontrol eder:
import { Connection, LAMPORTS_PER_SOL, PublicKey } from "@solana/web3.js";
const publicKey = new PublicKey("<your public key>");
const connection = new Connection("https://api.devnet.solana.com", "confirmed");
const balanceInLamports = await connection.getBalance(publicKey);
const balanceInSOL = balanceInLamports / LAMPORTS_PER_SOL;
console.log(
`💰 Tamamlandı! ${publicKey} adresindeki cüzdanın bakiyesi ${balanceInSOL}!`,
);
Bunu bir dosyaya kaydedin ve npx esrun check-balance.ts
çalıştırın. Şöyle bir çıktı görmelisiniz:
💰 Tamamlandı! ${publicKey} adresindeki cüzdanın bakiyesi 0!
Devnet SOL Al
Devnet'te geliştirme yapmak için ücretsiz SOL alabilirsiniz. Devnet SOL'i, değeri olmayan bir masa oyunu parası gibi düşünün - görünüşte değeri vardır ama gerçekte yoktur.
Devnet SOL alın ve anahtar çiftinizin açık anahtarını adres olarak kullanın.
İstediğiniz miktarda SOL seçin.
Bakiyenizi Kontrol Edin
Scripti yeniden çalıştırın. Bakiyenizin güncellendiğini görmelisiniz:
💰 Tamamlandı! ${publicKey} adresindeki cüzdanın bakiyesi 0.5!
Diğer Öğrencilerin Bakiyelerini Kontrol Edin
Scripti, herhangi bir cüzdanın bakiyesini kontrol etmek için değiştirebilirsiniz.
import { Connection, LAMPORTS_PER_SOL, PublicKey } from "@solana/web3.js";
const suppliedPublicKey = process.argv[2];
if (!suppliedPublicKey) {
throw new Error("Bakiyesini kontrol etmek için bir açık anahtar sağlayın!");
}
const connection = new Connection("https://api.devnet.solana.com", "confirmed");
const publicKey = new PublicKey(suppliedPublicKey);
const balanceInLamports = await connection.getBalance(publicKey);
const balanceInSOL = balanceInLamports / LAMPORTS_PER_SOL;
console.log(
`✅ Tamamlandı! ${publicKey} adresindeki cüzdanın bakiyesi ${balanceInSOL}!`,
);
Cüzdan adreslerini arkadaşlarınızla sohbet kanalında paylaşın ve bakiyelerini kontrol edin.
% npx esrun check-balance.ts (bazı cüzdan adresi)
✅ Tamamlandı! ${publicKey} adresindeki cüzdanın bakiyesi 3!
Ve birkaç arkadaşınızın bakiyelerini kontrol edin.
Challenge
Scripti aşağıdaki gibi değiştirin:
- Geçersiz cüzdan adreslerini yönetmek için talimatlar ekleyin.
- Scripti
mainNet
'e bağlanacak şekilde değiştirin ve bazı ünlü Solana cüzdanlarını kontrol edin.toly.sol
,shaq.sol
veyamccann.sol
deneyin.
Bir sonraki derste SOL transfer edeceğiz!
Kodunuzu GitHub'a yükleyin ve bize bu ders hakkında ne düşündüğünüzü söyleyin!